Skip to content

Bump csharpier and 18 others#20

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/nuget/squip-api/dot-config/nuget-minor-and-patch-2ec3b92388
Open

Bump csharpier and 18 others#20
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/nuget/squip-api/dot-config/nuget-minor-and-patch-2ec3b92388

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jul 11, 2026

Copy link
Copy Markdown

Updated csharpier from 0.17.0 to 0.30.6.

Release notes

Sourced from csharpier's releases.

0.30.6

What's Changed

Trailing comma is placed on new line if last enum value is followed by a comment #​1429

// input
enum MyEnum
{
    First,
    Second // the second value
}

// 0.30.5
enum MyEnum
{
    First,
    Second // the second value
    ,
}

// 0.30.6
enum MyEnum
{
    First,
    Second, // the second value
}

Full Changelog: belav/csharpier@0.30.5...0.30.6

0.30.5

What's Changed

Extra blank line added to file each time csharpier runs on this file #​1426

When a file ended in a comment and that comment had multiple blank lines before it, a new blank line was being added each time it was formatted.
// input

// input
namespace MyCompany.MyNamespace;


// Comment block

// 0.30.4
namespace MyCompany.MyNamespace;



// Comment block

// 0.30.5
namespace MyCompany.MyNamespace;

// Comment block

**Full Changelog**: https://github.com/belav/csharpier/compare/0.30.4...0.30.5

## 0.30.4

# 0.30.4
## What's Changed
### Formatting deletes `unsafe` modifier [#​1416](https://github.com/belav/csharpier/issues/1416)
Formatting a using directive with an unsafe modifier resulted in the lose of the unsafe keyword
```c#
// input & expected output
using unsafe NvapiQueryInterface = delegate* unmanaged[Cdecl]<uint, nint>;

// 0.30.3
using NvapiQueryInterface = delegate* unmanaged[Cdecl]<uint, nint>;

CSharpier keeps adding a newline every time a file is formatted #​1408

In some cases if a file ended with a comment, CSharpier would add a new extra blank line above the comment each time it formatted the file

// input & expected outpet
using System;

namespace MyCompany.MyNamespace;

// Comment block

// 0.30.3
using System;

namespace MyCompany.MyNamespace;


// Comment block

Full Changelog: belav/csharpier@0.30.3...0.30.4

0.30.3

What's Changed

CSharpier.MsBuild doesn't fail the github action anymore #​1357

The changes for 1311 caused CSharpier.MsBuild to not report unformatted files as errors on linux.

Thanks go to @​PetSerAl for the fix

0.30.2

What's Changed

CSharpier.MsBuild now uses DOTNET_HOST_PATH instead of just dotnet #​1387

Use current dotnet binary from DOTNET_HOST_PATH instead of just dotnet.

Collection expression inside a dictionary adds unexpected new line #​1390

// input & expected output
Dictionary<string, string[]> dictionary = new()
{
    {
        "Key",
        [
            "SomeValue__________________________________________",
            "SomeValue__________________________________________",
        ]
    },
};

// 0.30.1
Dictionary<string, string[]> dictionary = new()
{
    {
        "Key",

        [
            "SomeValue__________________________________________",
            "SomeValue__________________________________________",
        ]
    },
};

Failed syntax tree validation reported when trailing comma added before a trailing comment #​1388

With the following code, CSharpier will add a trailing comma before the trailing comment.
CSharpier's syntax tree validation was incorrectly reporting this as a failure.

// input
var someObject = new SomeObject()
{
    Property1 = 1,
    Property2 = 2 // Trailing Comment
};

// output
var someObject = new SomeObject()
 ... (truncated)

## 0.30.0

## Breaking Changes
The CSharpier dotnet tool no longer supports net6 & net7.
## What's Changed
### Support C# 13 & dotnet 9. [#​1318](https://github.com/belav/csharpier/issues/1318)
CSharpier now supports dotnet 9 along with formatting all C# 13 language features.
### Inconsistent Formatting for new() Operator Compared to Explicit Object Constructors [#​1364](https://github.com/belav/csharpier/issues/1364)
Implicit and explicit object initialization with constructors was not formatted consistently
```c#
// input & expected output
SomeObject someObject = new(
    someLongParameter___________________,
    someLongParameter___________________
)
{
    Property = longValue_______________________________________________________________________,
};

SomeObject someObject = new SomeObject(
    someLongParameter___________________,
    someLongParameter___________________
)
{
    Property = longValue_______________________________________________________________________,
};

// 0.29.2
SomeObject someObject =
    new(someLongParameter___________________, someLongParameter___________________)
    {
        Property = longValue_______________________________________________________________________,
    };

SomeObject someObject = new SomeObject(
    someLongParameter___________________,
    someLongParameter___________________
)
{
    Property = longValue_______________________________________________________________________,
};

Adds additional space before each member access in verbatim interpolated multiline string #​1358

When an interpolated verbatim string contained line breaks, the code within the interpolations would contain extra spaces.

// input & expected output
var someStringWithLineBreakAndLongValue =
    $@"
{someValue.GetValue().Name} someLongText________________________________________________________________";

// 0.29.2
 ... (truncated)

## 0.29.2

## What's Changed
### Comments don't follow tabs indent style [#​1343](https://github.com/belav/csharpier/issues/1343)
Prior to `0.29.2` CSharpier was converting any tabs within the block of a multiline comment to spaces.
```c#
public void SomeFunction()
{
	/*
	The following line is an example with an indent:
		This line is indented by one tab. (prior to 0.29.2 this would end up as a tab followed by 4 spaces)
	*/
	/*
	The following line is an example with an indent:
		This line is indented by 4 spaces but will be converted to 1 tab (prior to 0.29.2 this would end up as a tab followed by 4 spaces)
	*/
	/*
	The following line is an example with an indent:
	   This line is indented by 3 spaces but will be left as 3 spaces
	*/
}

csharpier-ignore-start now supported in object initializers #​1342

// input & expected output
return new SomeClass
{
    // csharpier-ignore-start
    SomeProperty =     someValue,
    SomeProperty2 =     someValue
    // csharpier-ignore-end
};

// 0.29.1
return new SomeClass
{
    // csharpier-ignore-start
    SomeProperty = someValue,
    SomeProperty2 = someValue
    // csharpier-ignore-end
};

Fixed extra new line between cast and collection expression. #​1334

// input & expected output
CallMethod(
    (string[])
        [
            longerValue_____________________________________________,
            longerValue_____________________________________________,
        ]
 ... (truncated)

## 0.29.1

## What's Changed
### Sorting of usings with underscore differs from Visual Studio [#​1327](https://github.com/belav/csharpier/issues/1327)
CSharpier now sorts `_` to the bottom of usings.
```c#
using SomeCompany.MWord;
using SomeCompany.ZWord;
using SomeCompany._Word;

Process cannot access the file "....net8.0\any\server.log" while running multiple extensions. #​1324

CSharpier Server now uses a log file name based on the port that it is starting on to avoid concurrency issues trying to access the same log file

Full Changelog: belav/csharpier@0.29.0...0.29.1

0.29.0

Breaking Changes

The formatting command will now exit with an error code of 1 if one of the target files cannot be compiled #​1131

Prior to 0.29.0 if csharpier encountered a file that could not be compiled it would treat it as a warning and exit with a code of 0.
As of 0.29.0 a file that cannot be compiled is now treated as an error and csharpier will exit with code 1

What's Changed

Enforce trailing commas in object and collection initializer #​668

CSharpier will now add trailing commas automatically where appropriate. It will collapse to a single line and remove the trailing comma in cases where everything fits on one line.

// input
public enum SomeEnum
{
    Value1,
    Value2
}

string[] someArray = new string[]
{
    someLongValue_____________________________________________,
    someLongValue_____________________________________________
};

string[] someArray = new string[]
{
    someValue,
    someValue,
};

// 0.29.0
public enum SomeEnum
{
    Value1,
    Value2,
}

string[] someArray = new string[]
{
    someLongValue_____________________________________________,
    someLongValue_____________________________________________,
}

string[] someArray = new string[] { someValue, someValue };

Many thanks go to @​dawust for the contribution.

Support for formatting custom file extensions #​1220

Prior to 0.29.0 csharpier would only format files with an extension of .cs or .csx. It is now possible to configure csharpier to format other files extensions, and to specify configuration options per file extension.
See https://csharpier.com/docs/Configuration#configuration-overrides for more details.

Invalid blank line being added with lambda returning collection expression #​1306

... (truncated)

0.28.2

What's Changed

Pipe to dotnet csharpier fails when subdirectory is inaccessible #​1240

When running the following CSharpier would look for config files in subdirectories of the pwd. This could lead to exceptions if some of those directories were inaccessible.

echo "namespace Foo { public class Bar { public string Baz {get;set;}}}" | dotnet csharpier

Thanks go to @​jamesfoster for reporting the issue.

Full Changelog: belav/csharpier@0.28.1...0.28.2

0.28.1

What's Changed

Third party .editorconfig leading to: Error Failure parsing editorconfig files #​1227

When CSharpier encountered an invalid .editorconfig file, it would throw an exception and not format files. These files could appear in 3rd party code (for example within node_modules). CSharpier now ignores invalid lines in .editorconfigs

Thanks go to @​K0Te for reporting the issue

Full Changelog: belav/csharpier@0.28.0...0.28.1

0.28.0

What's Changed

Fix dedented method call if there is a long chain #​1154

In some cases of method chains, the first invocation would end up dedented.

// 0.27.3
o.Property.CallMethod(
    someParameter_____________________________,
    someParameter_____________________________
)
    .CallMethod()
    .CallMethod();

// 0.28.0
o.Property.CallMethod(
        someParameter_____________________________,
        someParameter_____________________________
    )
    .CallMethod()
    .CallMethod();

Extra newline in switch case statement with curly braces [#​1192](belav/csharpier#1192

If a case statement started with a block it would get an extra new line

// 0.27.3
switch (someValue)
{
    case 0:
    {
        // dedented because the only statement is a block
        break;
    }

    case 1:

        {
            // indented because there are two statements, a block then a break
        }
        break;
}

// 0.28.0
// 0.27.3
switch (someValue)
{
    case 0:
    {
        // dedented because the only statement is a block
        break;
    }
 ... (truncated)

## 0.27.3

## What's Changed
### Add more options to CodeFormatterOptions [#​1172](https://github.com/belav/csharpier/issues/1172)
The API for CSharpier was only exposing `CodeFormatterOptions.PrintWidth`. It is now in sync with the CLI and exposes all of the available options
```c#
public class CodeFormatterOptions
{
    public int Width { get; init; } = 100;
    public IndentStyle IndentStyle { get; init; } = IndentStyle.Spaces;
    public int IndentSize { get; init; } = 4;
    public EndOfLine EndOfLine { get; init; } = EndOfLine.Auto;
}

Thanks go to @​Phault for the contribution

Extra indent when call method on RawStringLiteral #​1169

When a raw string literal was the first argument to a method call, it was getting an extra indent.

// input & expected output
CallMethod(
    """
    SomeRawString
    """.CallMethod()
);

// 0.27.2
CallMethod(
    """
        SomeRawString
        """.CallMethod()
);

Thanks go to @​Rudomitori for reporting the bug.

Using aliases sorting is not always the same depending on the input order #​1168

Using aliases were not sorting properly, resulting differing outputs and unstable formatting.

Inputs of

using A = string;
using B = string;
using C = string;
using D = string;

And

using D = string;
using C = string;
 ... (truncated)

## 0.27.2

## What's Changed
### Orphan variable since 0.27.1 [#​1153](https://github.com/belav/csharpier/issues/1153)
0.27.1 introduced the following formatting regression, resulting in short variables being orphaned on a line
```c#
// 0.27.1
o
    .Property.CallMethod(
        someParameter_____________________________,
        someParameter_____________________________
    )
    .CallMethod()
    .CallMethod();

// 0.27.2
o.Property.CallMethod(
    someParameter_____________________________,
    someParameter_____________________________
)
    .CallMethod()
    .CallMethod();

Thanks go to @​aurnoi1 for reporting the bug

Better support for CSharp Script #​1141

Version 0.27.1 parsed .csx files as if they were C#, so it could only format simple ones. It now parses them as CSharpScript files so it can format them properly.

Thanks go to @​Eptagone for reporting the bug.

Full Changelog: belav/csharpier@0.27.1...0.27.2

0.27.1

What's Changed

Support for CSharp Script #​1141

Previously CSharpier would only format files matching *.cs which prevented it from formatting C# script files. It now formats *.{cs,csx}

Thanks go to @​Eptagone for the suggestion

Weird formatting of invocation chain #​1130

Invocation chains that started with an identifier <= 4 characters were causing a strange break in the first method call. There were other edge cases cleaned up while working on the fix.

// 0.27.0
var something________________________________________ = x.SomeProperty.CallMethod(
    longParameter_____________,
    longParameter_____________
)
    .CallMethod();

// 0.27.1
var something________________________________________ = x
    .SomeProperty.CallMethod(longParameter_____________, longParameter_____________)
    .CallMethod();
// 0.27.0
var someLongValue_________________ = memberAccessExpression[
    elementAccessExpression
].theMember______________________________();

// 0.27.1
var someLongValue_________________ = memberAccessExpression[elementAccessExpression]
    .theMember______________________________();
// 0.27.0
someThing_______________________
    ?.Property
    .CallMethod__________________()
    .CallMethod__________________();

// 0.27.1
someThing_______________________
    ?.Property.CallMethod__________________()
    .CallMethod__________________();

Thanks go to @​Rudomitori for reporting the issue

"Failed syntax tree validation" for raw string literals #​1129

When an interpolated raw string changed indentation due to CSharpier formatting, CSharpier was incorrectly reporting it as failing syntax tree validation.

 ... (truncated)

## 0.27.0

## What's Changed
### Improve formatting of lambda expressions [#​1066](https://github.com/belav/csharpier/pull/1066)
Many thanks go to @​Rudomitori for contributing a number of improvements to the formatting of lambda expressions.

Some examples of the improvements.
```c#
// input
var affectedRows = await _dbContext.SomeEntities
    .ExecuteUpdateAsync(
        x => 
            x.SetProperty(x => x.Name, x => command.NewName)
                .SetProperty(x => x.Title, x => command.NewTItle)
                .SetProperty(x => x.Count, x => x.Command.NewCount)
    );

// 0.27.0
var affectedRows = await _dbContext.SomeEntities
    .ExecuteUpdateAsync(x =>
        x.SetProperty(x => x.Name, x => command.NewName)
            .SetProperty(x => x.Title, x => command.NewTItle)
            .SetProperty(x => x.Count, x => x.Command.NewCount)
    );
// input
builder.Entity<IdentityUserToken<string>>(b =>
{
    b.HasKey(
        l =>
            new
            {
                l.UserId,
                l.LoginProvider,
                l.Name
            }
    );
    b.ToTable("AspNetUserTokens");
});

// 0.27.0
builder.Entity<IdentityUserToken<string>>(b =>
{
    b.HasKey(l => new
    {
        l.UserId,
        l.LoginProvider,
        l.Name
    });
    b.ToTable("AspNetUserTokens");
 ... (truncated)

## 0.26.7

## What's Changed
### Keep Field.Method() on the same line when breaking long method chain [#​1010](https://github.com/belav/csharpier/issues/1010)
0.26.0 introduced changes that broke long invocation chains on fields/properties as well as methods. That change has been reverted after community feedback.

```c#
// 0.26.0
var loggerConfiguration = new LoggerConfiguration()
    .Enrich
    .FromLogContext()
    .Enrich
    .WithProperty("key", "value")
    .Enrich
    .WithProperty("key", "value")
    .Enrich
    .WithProperty("key", "value")
    .Enrich
    .WithProperty("key", "value")
    .WriteTo
    .Console(outputTemplate: "template");

// 0.26.7
var loggerConfiguration = new LoggerConfiguration()
    .Enrich.FromLogContext()
    .Enrich.WithProperty("key", "value")
    .Enrich.WithProperty("key", "value")
    .Enrich.WithProperty("key", "value")
    .Enrich.WithProperty("key", "value")
    .WriteTo.Console(outputTemplate: "template");

Full Changelog: belav/csharpier@0.26.6...0.26.7

0.26.6

What's Changed

CSharpier incorrectly reports problems with differing line endings as "The file did not end with a single newline"#​1067

If CSharpier was validating that a file was formatted, and that file contained only \n but CSharpier was configured to use \r\n, then it would report the problem as The file did not end with a single newline

CSharpier added support for reading line ending configuration from an .editorconfig which could contain end_of_line = crlf so some users were unknowingly configuring CSharpier to use \r\n

CSharpier now correctly reports the problem as The file contained different line endings than formatting it would result in.

Full Changelog: belav/csharpier@0.26.5...0.26.6

0.26.5

What's Changed

0.26.4 sorts NSubstitute before Newtonsoft.Json #​1061

The using sorting in 0.26.4 was taking into account case.

// 0.26.4
using System;
using NSubstitute;
using Newtonsoft.Json;

// 0.26.5
using System;
using Newtonsoft.Json;
using NSubstitute;

Thanks go to @​loraderon for contributing the fix.

Extra newline added when using a collection expression with { get; } #​1063

A collection expression in a property initializer was including an extra new line.

// 0.26.4
public class ClassName
{
    public List<DayOfWeek> DaysOfWeek { get; } =

        [
            DayOfWeek.Sunday,
            // snip
            DayOfWeek.Saturday
        ];    
}

// 0.26.5
public class ClassName
{
    public List<DayOfWeek> DaysOfWeek { get; } =
        [
            DayOfWeek.Sunday,
            // snip
            DayOfWeek.Saturday
        ];    
}

Thanks go to @​SapiensAnatis for contributing the fix.

Comments at the end of a collection expression should be indented #​1059

When the close bracket on a collection expression had a leading comment, it had the same indentation as the bracket.

// 0.26.4
 ... (truncated)

## 0.26.4

## What's Changed
### Spacing bugs related to C#​12 collection expressions [#​1049](https://github.com/belav/csharpier/issues/1049) [#​1047](https://github.com/belav/csharpier/issues/1047)
There were a number of cases where CSharpier was including extra blank lines, an extra space, or not formatting contents of collection expressions.
```c#
// 0.26.3
var a = new A { B =  [1, 2, 3] };

List<string> items = [// My item
    "Hello",];

items.AddRange(

    [
        LongValue________________________________________________,
        LongValue________________________________________________
    ]
);

items =  [];
items ??=  [];

class SomeClass
{
    public SomeValue SomeProperty =>

        [
            LongValue________________________________________________,
            LongValue________________________________________________
        ];

    public SomeValue Method() =>

        [
            LongValue________________________________________________,
            LongValue________________________________________________
        ];
}

// 0.26.4
var a = new A { B = [1, 2, 3] };

List<string> items =
[
    // My item
    "Hello",
];

items.AddRange(
    [
        LongValue________________________________________________,
 ... (truncated)

## 0.26.3

## What's Changed
#### C#​12 Collection expressions are prefixed with two spaces [#​1009](https://github.com/belav/csharpier/issues/1009)
```c#
// 0.26.0
List<int> ids =  [];

// 0.26.3
List<int> ids = [];

Thanks go to @​Jackenmen for reporting the problem.

CSharpier inserts extra spaces around the contents of collection expressions #​1002

// 0.26.0
List<int> ids = [ ];
List<int> ids = [ 1, 2, 3 ];

// 0.26.3
List<int> ids = [];
List<int> ids = [1, 2, 3];

Thanks go to @​golavr for reporting the problem.

Configuration files not respected for stdin #​1028

When piping a file to csharpier via stdin, CSharpier uses the working directory to locate any configuration files. This was broken with 0.26.0.

Thanks go to @​kikniknik for reporting the problem.

Modify CSharpier.MSBuild to use NETCoreSdkVersion to detect which sdk to use for running CSharpier #​1022 #​1027

Previously CSharpier.MSBuild was using targetFramework to determine which version of CSharpier to run. This was problematic when there were multiple target frameworks, or the project was targeting a superset such as net8.0-windows

It now makes use of NETCoreSdkVersion to determine which version of CSharpier to run.

Thanks go to @​Tyrrrz for the suggestion and to @​Cjewett for the contribution to make it work

CSharpierIgnore not respected when recursively finding .editorconfig

When looking for .editorconfig files, CSharpier looks for them recursively in the current directory. This logic was not taking into account any files or directories ignored by a .csharpierignore.

Thanks go to @​sebastieng84 for the contribution.

Optimize editorconfig lookups when piping files #​1039

CSharpier now only looks for an .editorconfig for the file being piped to CSharpier. Under normal usage it recursively looks for all possible .editorconfig files for the given directory.

Full Changelog: belav/csharpier@0.26.2...0.26.3

0.26.2

0.26.2

What's Changed

CSharpier.MsBuild does not support DotNet 8 #​1012

When using CSharpier.MsBuild in a setting where the project targeted net8.0 and only the net8 sdk was installed, CSharpier.MsBuild would attempt to run the net7.0 version of csharpier and fail because the net7 sdk was not installed.

Thanks go to @​aditnryn for the fix

Global System using directives should be sorted first #​1003

Global using were not sorting System to the top, which was inconsistent with regular using.

// 0.26.1
global using ZWord;
global using AWord;
global using System.Web;
global using System;

// 0.26.2
global using System;
global using System.Web;
global using AWord;
global using ZWord;

Thanks go to @​vipentti for the fix

Full Changelog: belav/csharpier@0.26.1...0.26.2

0.26.1

What's Changed

Editorconfig with duplicated sections was freezing IDE's #​989

CSharpier was unable to parse an .editorconfig file that contained duplicate sections and would crash. This would result in a hung IDE.

[*]
insert_final_newline = true

[*]
spelling_languages = en-us

Thanks go to @​echoix for helping track this down.

A .csharpierrc file anywhere above a file now takes priority over any .editorconfig #​987

Given the following setup

/src/.editorconfig
/src/ProjectName/.editorconfig
/src/.csharpierrc

Originally with 0.26.0, the /src/ProjectName/.editorconfig file would be used for determining the configuration options for a file within src/ProjectName. This resulted in the existing options within .csharpierrc being ignored.

With 0.26.1, if a .csharpierrc exists anywhere above a given file, it will be used to determine the configuration options.

Thanks go to @​parched for reporting the issue.

Full Changelog: belav/csharpier@0.26.0...0.26.1

0.26.0

What's Changed

EditorConfig Support

CSharpier will now read configuration options from an .editorconfig. See https://csharpier.com/docs/Configuration for more details.

Net8 Support

CSharpier now supports the .net8 sdk. It still supports net6 and net7.

Sorting of using directives #​661

CSharpier now sorts using statements. It follows the following rules

global using System.Linq; // sort global first
using System; // sort anything in System
using NonSystem; // sort anything non-system
using static Static; // sort static
using Alias = Z; // sort alias
using SomeAlias = A;
#if DEBUG // finally any usings in #if's
using Z; // contents are not sorted as of now
using A;
#endif

Remove line before the content of a bracketless if/else statement #​979

// input
if (true)

    CallMethod();
else if (false)

    CallMethod();
else

    CallMethod();

for (; ; )

    CallMethod();

while (true)

    CallMethod();

// 0.26.0
if (true)
    CallMethod();
else if (false)
    CallMethod();
else
    CallMethod();

 ... (truncated)

## 0.25.0

## Breaking Changes
#### Improve if directive formatting [#​404](https://github.com/belav/csharpier/issues/404)
The `preprocessorSymbolSets` configuration option is no longer supported. 
CSharpier can now parse and format the full range of `#if` preprocessor statements so it is no longer required.

// 0.24.2 - supported some basic versions of #if
#if DEBUG
// some code
#endif

// 0.25.0 - supports the full range of #if including nested statements
// would require the use of the preprocessorSymbolSets configuration option previously
#if (DEBUG && !NET48) || MONO
// some code
#if NET6_0
// some other code
#endif
#endif


## What's Changed
#### Sort Modifiers [#​725](https://github.com/belav/csharpier/issues/725)
CSharpier will now sort modifiers according to the defaults for [IDE0036](https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/ide0036#csharp_preferred_modifier_order)
```c#
// input
public override async Task Method1() { } 
async public override Task Method2() { }

// output
public override async Task Method1() { } 
public override async Task Method2() { }

Thanks go to @​glmnet for the contribution

Support c# 12 features #​883

CSharpier now supports formatting
Primary Constructors,
Alias any typ, and
Default lambda parameters

Support for log levels #​875

CSharpier now supports --loglevel with the CLI and CSharpier_LogLevel for MSBuild. This changes the level of logging output. Valid options are:

  • None
  • Error
  • Warning
  • Information (default)
  • Debug

Thanks go to @​samtrion for the suggestion
... (truncated)

0.24.2

What's Changed

csharpier-ignore comments force CRLF line endings #​884

In a case where

  • a file on windows (which defaults to CRLF) contained only LF
  • the file contained // csharpier-ignore on a multi-line statement
  • the file was formatted in multiple passes due to preprocessor symbols (such as an #if DEBUG)

CSharpier would end up formatting the file with CRLF on the // csharpier-ignore statement but LF in the rest of the file. The file would then fail the formatting check.

Thanks go to @​pingzing for the bug report and detailed reproduction steps.

Full Changelog: belav/csharpier@0.24.1...0.24.2

0.24.1

What's Changed

0.24.0 Regression csharpier-ignore causes blank lines between statements to be removed. #​879

// input & expected output

// csharpier-ignore
public string Example
{
  get
     {
       if (_example is not null)
         return _example;

       var number = Random.Shared.Next();

       return _example = number.ToString();
     }
}

// 0.24.0

// csharpier-ignore
public string Example
{
  get
     {
       if (_example is not null)
         return _example;
       var number = Random.Shared.Next();
       return _example = number.ToString();
     }
}

Thanks go to @​Pentadome for reporting the regression bug.

0.24.0

What's Changed

Formatting named list patterns loses code and causes compilation error #​876

// input & expected output
return list switch
{
    [var elem] => elem * elem,
    [] => 0,
    [..] elems => elems.Sum(e => e + e),
};

// 0.23.0
return list switch
{
    [var elem] => elem * elem,
    [] => 0,
    [..] => elems.Sum(e => e + e),
};

Thanks go to @​Dragemil for reporting the bug

CSharpier.MSBuild does not support usernames or project paths with spaces #​872

CSharpier.MSBuild would throw an exception when building a project if the username had a space, or if the project path had a space.

Thanks go to @​ooo2003003v2 for reporting the bug.

#pragma with long line introduces extra line break #​865

// input & expected output
if (
    e is
#pragma warning disable CS0618
    BadHttpRequestException
#pragma warning restore CS0618
    {
        Message: "______________________________________________________________________________________________________________"
    }
) { }

// 0.23.0
if (
    e is
#pragma warning disable CS0618
    BadHttpRequestException
#pragma warning restore CS0618

    {
        Message: "______________________________________________________________________________________________________________"
 ... (truncated)

## 0.23.0

# 0.23.0
## Breaking Changes
#### Make compile errors public when using CSharpier.Core [#​799](https://github.com/belav/csharpier/issues/799)
Previously `CodeFormatter.Format(unformattedCode)` and its overloads returned only the formatted code. It now returns a result object.
```c#
public class CodeFormatterResult
{
    public string Code { get; }
    public IEnumerable<Diagnostic> CompilationErrors { get; }
}

This is a breaking change. There were also a number of types that should not have been public that were made internal.

Thanks go to @​verdverm for the suggestion

What's Changed

Allow comment-description suffix on csharpier-ignore comments #​835

It is now possible to include a suffix on csharpier-ignore comments. The description must be seperated from the comment by at least one - character.

// csharpier-ignore - class copied as-is from another project
public class Unformatted     { 
        private string     unformatted;
}

// csharpier-ignore-start -- class copied as-is from another project
public class Unformatted1     { }
public class Unformatted2     { }
// csharpier-ignore-end

Thanks go to @​strepto for the suggestion

Fix formatting for open generics #​832

// 0.22.1
typeof(AnExceptionallyLongAndElaborateClassNameToMakeAnExampleRegardingOpenGenerics<
    ,
>).MakeGenericType(typeof(string), typeof(int));

// 0.23.0
typeof(AnExceptionallyLongAndElaborateClassNameToMakeAnExampleRegardingOpenGenerics<,>).MakeGenericType(
    typeof(string),
    typeof(int)
);

Thanks go to @​jonstodle for reporting the issue

#region should be indented based on context #​812

Previously the preceding whitespace was left as is on #region and #endregion which resulted undesired formatting.
... (truncated)

0.22.1

0.22.1

What's Changed

Fix for CSharpier.MsBuild so it selects a compatible framework if the project does not target net6 or net7 #​797

This fix auto selects net7.0 for projects that do not target net6.0 or net7.0. This means the CSharpier_FrameworkVersion property is only required if a project is targeting < net6.0 and net7.0 is not installed.

Thanks go to @​samtrion for submitting the fix.

Full Changelog: belav/csharpier@0.21.1...0.22.1

0.22.0

0.22.0

Breaking Changes

Support only UTF8 and UTF8-BOM files #​787

Previously UTF.Unknown was used to try to determine file encodings.
This was problematic because if a file was too small it would not properly detect the encoding.

public enum MeetingLocation
{
  Café,
  Restaurant
}

This file saved as UTF8 would be detected as SBCSCodePageEncoding and result in CSharpier trying to parse the following file

public enum MeetingLocation
{
  Café,
  Restaurant
}

CSharpier now only supports UTF8 & UTF8-BOM files. This is consistent with the IDE plugins, which stream files to CSharpier as UTF8.

Thanks go to @​Meligy for reporting the problem.

CSharpier.MSBuild support for .NET 7 #​773

CSharpier.MSBuild now multi-targets net6.0 and net7.0. As a side effect of multi-targeting, the CSharpier_FrameworkVersion property is now required for projects that do not target net6.0 or net7.0. See https://csharpier.com/docs/MsBuild#target-frameworks

Thanks go to @​OneCyrus for reporting it

What's Changed

Fix for CSharpier.MsBuild "Specified condition "$(CSharpier_Check)" evaluates to "" instead of a boolean" #​788

When projects referencing CSharpier.MsBuild were reloaded, they would get the error "Specified condition "$(CSharpier_Check)" evaluates to "" instead of a boolean" and fail to load.

Thanks go to @​samtrion for submitting the fix.

List Pattern support for subpattern within a slice #​779

CSharpier did not have proper support for the new c# 11 slice pattern. When a slice contained a pattern, that pattern would be lost.

// input
var someValue = someString is [var firstCharacter, .. var rest];

// 0.21.0
var someValue = someString is [var firstCharacter, ..];

// 0.22.0
var someValue = someString is [var firstCharacter, .. var rest];
 ... (truncated)

## 0.21.0

# 0.21.0
## What's Changed
#### Support file scoped types [#​748](https://github.com/belav/csharpier/issues/748)
CSharpier now supports a file scoped type
```c#
file class FileScopedClass
{
    // implementation
}

Csharpier removes empty lines in ignored blocks of code #​742

In some instances csharpier was removing empty lines in csharpier-ignore blocks of code

// input
public class KeepLines1
{
    // csharpier-ignore-start
    private string    first;

    private string    second;
    // csharpier-ignore-end
}

// 0.20.0
public class KeepLines1
{
    // csharpier-ignore-start
    private string    first;private string    second;
    // csharpier-ignore-end
}

Thanks go to @​MonstraG for reporting it

Await + LINQ query syntax indents incorrectly #​740

// 0.20.0
var result = await from thing in Things
from otherThing in OtherThings
from finalThing in SomethingAsync(thing, otherThing)
select finalThing;

// 0.21.0
var result = await
    from thing in Things
    from otherThing in OtherThings
    from finalThing in SomethingAsync(thing, otherThing)
    select finalThing;

... (truncated)

0.20.0

What's Changed

Improve Tuple formatting #​735

Tuples would break poorly in some cases

// 0.19.2

public async Task<(ILookup<string, int> someLookup, ILookup<int, string> reverseLookup, ILookup<
        string,
        ClassName
    > thirdLookup)> CreateLookups()
{
    return (null, null);
}

public void TuplesAsInput(
    (int myInt, string myString, ClassName myClassNameInstance, Dictionary<
        int,
        string
    > wordList) inputArgs
)
{
    // do something
}

// 0.20.0
public async Task<(
    ILookup<string, int> someLookup,
    ILookup<int, string> reverseLookup,
    ILookup<string, ClassName> thirdLookup
)> CreateLookups()
{
  return (null, null);
}

public void TuplesAsInput(
    (
        int myInt,
        string myString,
        ClassName myClassNameInstance,
        Dictionary<int, string> wordList
    ) inputArgs
 )
 {
   // do something
 }

Thanks go to @​BenjaBobs for reporting the bug.

Full Changelog: belav/csharpier@0.19.2...0.20.0

0.19.0

What's Changed

Adding a cache to speed up formatting. #​692

CSharpier now caches information about files that it has formatted to speed up subsequent runs.
By default the following are used as cache keys and a file is only formatted if one of them has changed.

  • CSharpier Version
  • CSharpier Options
  • Content of the file

The cache is stored at [LocalApplicationData]/CSharpier/.formattingCache.

Ignore node_modules #​699

CSharpier now ignores any files within a node_modules folder.

Thanks go to @​RichiCoder1 for the suggestion and @​SubjectAlpha for the implementation.

Extra space before curly brace in array initializer #​693

// 0.18.0
public class ClassName
{
    public int[] SomeArray { get; set; } =  { 1, 2, 3 };
}
// 0.19.0
public class MyClass
{
    public int[] SomeArray { get; set; } = { 1, 2, 3 };
}

Thanks go to @​TiraelSedai for reporting the bug.

New Contributors

Full Changelog: belav/csharpier@0.18.0...0.19.0

0.18.0

What's Changed

Initial C# 11 support #​686

CSharpier can format the following c# 11 features

  • Raw string literals
  • Generic attributes
  • Static abstract members in interfaces
  • Newlines in string interpolation expressions CSharpier will leave existing new lines within expressions and not add new ones
  • List Patterns
  • UTF8 string literals
  • Unsigned right shift operator
  • Checked operator
  • Generic math

Use relative file path in CommandLineFormatter #​680

CSharpier now outputs relative or absolute file paths so that they are clickable in terminals.

dotnet csharpier .

# csharpier 0.17.0
Error Invalid.cs - Failed to compile so was not formatted.

# csharpier 0.18.0
Error ./Invalid.cs - Failed to compile so was not formatted.

dotnet csharpier c:/src

# csharpier 0.17.0
Error Invalid.cs - Failed to compile so was not formatted.

# csharpier 0.18.0
Error c:/src/Invalid.cs - Failed to compile so was not formatted.

Thanks go to @​dlech

Invalid code for comments inside expressions in verbatim interpolated strings #​679

// input
var someValue =
    $@"
    {
        // comment
        "hi"
    }
    ";
// 0.17.0
var someValue =
    $@"
    {
        // comment "hi"}
 ... (truncated)

Commits viewable in [compare view](https://github.com/belav/csharpier/compare/0.17.0...0.30.6).
</details>

Updated [EFCore.NamingConventions](git://github.com/efcore/EFCore.NamingConventions) from 10.0.0 to 10.0.1.

<details>
<summary>Release notes</summary>

_Sourced from [EFCore.NamingConventions's releases](git://github.com/efcore/EFCore.NamingConventions/releases)._

## 10.0.1

## What's Changed
* Fix nested JSON owned entities causing ArgumentNullException in EF Core 10 by @​brendonparker in https://github.com/efcore/EFCore.NamingConventions/pull/347

## New Contributors
* @​brendonparker made their first contribution in https://github.com/efcore/EFCore.NamingConventions/pull/347

**Full Changelog**: https://github.com/efcore/EFCore.NamingConventions/compare/v10.0.0...v10.0.1

Commits viewable in [compare view](git://github.com/efcore/EFCore.NamingConventions/compare/v10.0.0...v10.0.1).
</details>

Updated [FluentAssertions](https://github.com/fluentassertions/fluentassertions) from 8.8.0 to 8.10.0.

<details>
<summary>Release notes</summary>

_Sourced from [FluentAssertions's releases](https://github.com/fluentassertions/fluentassertions/releases)._

## 8.10.0

<!-- Release notes generated using configuration in .github/release.yml at main -->

## What's Changed
### Improvements
* Fail with a descriptive error when path-based rules are used on value-semantic types by @​dennisdoomen in https://github.com/fluentassertions/fluentassertions/pull/3187
* Significantly speed up BeEquivalentTo for large unordered collections by @​dennisdoomen in https://github.com/fluentassertions/fluentassertions/pull/3188
* Add ComparingNullCollectionsAsEmpty and ComparingNullStringsAsEmpty options to BeEquivalentTo by @​dennisdoomen in https://github.com/fluentassertions/fluentassertions/pull/3202
* Include original index in extraneous item failure messages by @​dennisdoomen in https://github.com/fluentassertions/fluentassertions/pull/3203
### Documentation
* Reroute the docs link to Xceed by @​dennisdoomen in https://github.com/fluentassertions/fluentassertions/pull/3183
* Fix typo in release notes by @​jnyrup in https://github.com/fluentassertions/fluentassertions/pull/3194
* Fix typos in docs by @​jnyrup in https://github.com/fluentassertions/fluentassertions/pull/3197
### Others
* Bump flatted from 3.4.1 to 3.4.2 in the npm_and_yarn group across 1 directory by @​dependabot[bot] in https://github.com/fluentassertions/fluentassertions/pull/3184
* Add AI assistant instruction file (agents.md) for Copilot, Claude, and JetBrains Junie by @​Copilot in https://github.com/fluentassertions/fluentassertions/pull/3176
* Bump smol-toml from 1.6.0 to 1.6.1 in the npm_and_yarn group across 1 directory by @​dependabot[bot] in https://github.com/fluentassertions/fluentassertions/pull/3185
* Bump the npm_and_yarn group across 1 directory with 2 updates by @​dependabot[bot] in https://github.com/fluentassertions/fluentassertions/pull/3186
* Bump cspell from 9.7.0 to 10.0.0 by @​dependabot[bot] in https://github.com/fluentassertions/fluentassertions/pull/3189
* Update nugets by @​jnyrup in https://github.com/fluentassertions/fluentassertions/pull/3192
* Fixup Qodana issues by @​jnyrup in https://github.com/fluentassertions/fluentassertions/pull/3193
* Fix Qodana argument separator by @​jnyrup in https://github.com/fluentassertions/fluentassertions/pull/3195
* Use new Qodana linter option by @​jnyrup in https://github.com/fluentassertions/fluentassertions/pull/3196
* Fix flaky BeLessThanOrEqualTo execution time test by @​Copilot in https://github.com/fluentassertions/fluentassertions/pull/3200
* Bump JetBrains/qodana-action from 2025.3 to 2026.1 by @​dependabot[bot] in https://github.com/fluentassertions/fluentassertions/pull/3201
* Use long for hashCode in ReferentialComparer to avoid overflow by @​dennisdoomen in https://github.com/fluentassertions/fluentassertions/pull/3204


**Full Changelog**: https://github.com/fluentassertions/fluentassertions/compare/8.9.0...8.10.0

## 8.9.0

<!-- Release notes generated using configuration in .github/release.yml at main -->

> [!WARNING]
> For projects targeting .NET 9, you need at least .NET SDK 9.0.200 as earlier versions will trigger compile errors because of invalid overload resolution. See #​3225 

## What's Changed
### New features
* Add support for `Span<T>`, `ReadOnlySpan<T>`, `Memory<T>` and `ReadOnlyMemory<T>` by @​dennisdoomen in https://github.com/fluentassertions/fluentassertions/pull/3172
### Improvements
* Allow excluding all properties by type from `BeEquivalentTo` by @​Copilot in https://github.com/fluentassertions/fluentassertions/pull/3115
* Clean-up the stack trace when throwing an assertion failure by @​dennisdoomen in https://github.com/fluentassertions/fluentassertions/pull/3152
* Improve reporting the differences between differently sized collections in `BeEquivalentTo` by @​dennisdoomen in https://github.com/fluentassertions/fluentassertions/pull/3133
* Improve reporting the subject when chaining `Throw` and `Which` by @​dennisdoomen in https://github.com/fluentassertions/fluentassertions/pull/3160
* Add `HaveMillisecond`/`NotHaveMillisecond` assertion methods for `DateTime` and `DateTimeOffset` by @​Copilot in https://github.com/fluentassertions/fluentassertions/pull/3164
* Add `BeEqualTo` and `NotBeEqualTo` as collection assertion aliases by @​Copilot in https://github.com/fluentassertions/fluentassertions/pull/3166
### Fixes
* Fix formatting exception when comparing strings containing braces by @​Copilot in https://github.com/fluentassertions/fluentassertions/pull/3151
### Documentation
* Also mention the global configuration options in the docs. by @​dennisdoomen in https://github.com/fluentassertions/fluentassertions/pull/3132
* Add xUnit migration tips by @​fuguiKz in https://github.com/fluentassertions/fluentassertions/pull/3141
* Point the docs to the new site by @​dennisdoomen in https://github.com/fluentassertions/fluentassertions/pull/3155
* Added missing release notes by @​dennisdoomen in https://github.com/fluentassertions/fluentassertions/pull/3161
* Fix "an" vs "a" typos by @​jnyrup in https://github.com/fluentassertions/fluentassertions/pull/3174
### Others
* Bump actions/download-artifact from 5 to 6 by @​dependabot[bot] in https://github.com/fluentassertions/fluentassertions/pull/3116
* Bump cspell from 9.2.1 to 9.2.2 by @​dependabot[bot] in https://github.com/fluentassertions/fluentassertions/pull/3118
* Bump actions/upload-artifact from 4 to 5 by @​dependabot[bot] in https://github.com/fluentassertions/fluentassertions/pull/3117
* Add NuGet package attestations using GitHub provenance by @​Copilot in https://github.com/fluentassertions/fluentassertions/pull/3119
* Bump cspell from 9.2.2 to 9.3.0 by @​dependabot[bot] in https://github.com/fluentassertions/fluentassertions/pull/3122
* Bump actions/attest-build-provenance from 2 to 3 by @​dependabot[bot] in https://github.com/fluentassertions/fluentassertions/pull/3121
* fix qodana warnings by @​jnyrup in https://github.com/fluentassertions/fluentassertions/pull/3123
* Update nuget packages by @​jnyrup in https://github.com/fluentassertions/fluentassertions/pull/3124
* Bump cspell from 9.3.0 to 9.3.2 by @​dependabot[bot] in https://github.com/fluentassertions/fluentassertions/pull/3125
* Bump actions/checkout from 5 to 6 by @​dependabot[bot] in https://github.com/fluentassertions/fluentassertions/pull/3127
* Update to NET 10 SDK by @​jnyrup in https://github.com/fluentassertions/fluentassertions/pull/3128
* Use `==` or `!=` when comparing Nullable<T> against constants by @​jnyrup in https://github.com/fluentassertions/fluentassertions/pull/3129
* Create polyfill for `string.Create` by @​jnyrup in https://github.com/fluentassertions/fluentassertions/pull/3130
* Bump cspell from 9.3.2 to 9.4.0 by @​dependabot[bot] in https://github.com/fluentassertions/fluentassertions/pull/3131
* Bump actions/cache from 4 to 5 by @​dependabot[bot] in https://github.com/fluentassertions/fluentassertions/pull/3136
* Bump actions/upload-artifact from 5 to 6 by @​dependabot[bot] in https://github.com/fluentassertions/fluentassertions/pull/3135
* Bump actions/download-artifact from 6 to 7 by @​dependabot[bot] in https://github.com/fluentassertions/fluentassertions/pull/3134
* Cleanups by @​jnyrup in https://github.com/fluentassertions/fluentassertions/pull/3137
* Nuget updates by @​jnyrup in https://github.com/fluentassertions/fluentassertions/pull/3139
* Suppress `UnassignedGetOnlyAutoProperty` for `Node.GetHashCode` by @​jnyrup in https://github.com/fluentassertions/fluentassertions/pull/3138
* Use `NonReadonlyMemberInGetHashCode` by @​jnyrup in https://github.com/fluentassertions/fluentassertions/pull/3140
* Bump JetBrains/qodana-action from 2025.2 to 2025.3 by @​dependabot[bot] in https://github.com/fluentassertions/fluentassertions/pull/3142
* Use compiler-generated `paramName` parameter by @​jnyrup in https://github.com/fluentassertions/fluentassertions/pull/3143
* Fix `When_concurrently_getting_equality_strategy_it_should_not_throw` by @​jnyrup in https://github.com/fluentassertions/fluentassertions/pull/3144
* Bump cspell from 9.4.0 to 9.6.0 by @​dependabot[bot] in https://github.com/fluentassertions/fluentassertions/pull/3146
* Bump cspell from 9.6.0 to 9.6.2 by @​dependabot[bot] in https://github.com/fluentassertions/fluentassertions/pull/3153
 ... (truncated)

Commits viewable in [compare view](https://github.com/fluentassertions/fluentassertions/compare/8.8.0...8.10.0).
</details>

Updated [Microsoft.AspNetCore.Authentication.JwtBearer](https://github.com/dotnet/dotnet) from 10.0.2 to 10.0.9.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.AspNetCore.Authentication.JwtBearer's releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits).
</details>

Updated [Microsoft.EntityFrameworkCore](https://github.com/dotnet/dotnet) from 10.0.2 to 10.0.9.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.EntityFrameworkCore's releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits).
</details>

Updated [Microsoft.EntityFrameworkCore.Design](https://github.com/dotnet/dotnet) from 10.0.2 to 10.0.9.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.EntityFrameworkCore.Design's releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits).
</details>

Updated [Microsoft.EntityFrameworkCore.Relational](https://github.com/dotnet/dotnet) from 10.0.2 to 10.0.9.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.EntityFrameworkCore.Relational's releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits).
</details>

Updated [Microsoft.EntityFrameworkCore.Tools](https://github.com/dotnet/dotnet) from 10.0.2 to 10.0.9.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.EntityFrameworkCore.Tools's releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare view](https://github.com/dotnet/dotnet/commits).
</details>

Updated [Microsoft.OpenApi](https://github.com/Microsoft/OpenAPI.NET) from 2.7.5 to 2.10.0.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.OpenApi's releases](https://github.com/Microsoft/OpenAPI.NET/releases)._

## 2.10.0

## [2.10.0](https://github.com/microsoft/OpenAPI.NET/compare/v2.9.0...v2.10.0) (2026-07-03)


### Features

* add JsonConverter for OpenApiSchema System.Text.Json serialization ([#​2915](https://github.com/microsoft/OpenAPI.NET/issues/2915)) ([465521b](https://github.com/microsoft/OpenAPI.NET/commit/465521ba723ea9377d6838395d58e7212d64ece7))
* **library:** support schema keywords on references ([2749463](https://github.com/microsoft/OpenAPI.NET/commit/2749463f1ec1d452ba2334876d32466ea45ee8d1)), closes [#​2903](https://github.com/microsoft/OpenAPI.NET/issues/2903)


### Bug Fixes

* Don't silently skip null assignment to OpenApiDocument.Tags ([#​2917](https://github.com/microsoft/OpenAPI.NET/issues/2917)) ([6a45a82](https://github.com/microsoft/OpenAPI.NET/commit/6a45a826e095d198605b340c50d46c066eed72ad))
* handling of nullable enums for 3.0 ([#​2920](https://github.com/microsoft/OpenAPI.NET/issues/2920)) ([f4778e0](https://github.com/microsoft/OpenAPI.NET/commit/f4778e024e6bf033a4b6c4b90ea6636de712f826))
* **library:** keep v3 schema references ref-only ([8d811c3](https://github.com/microsoft/OpenAPI.NET/commit/8d811c3e76a8963be6e7a605b80c98d0ea0c63a5))
* preserve JSON Schema 2020-12 keyword siblings on $ref schemas for OAS 3.1+ ([#​2896](https://github.com/microsoft/OpenAPI.NET/issues/2896)) ([fb20d46](https://github.com/microsoft/OpenAPI.NET/commit/fb20d460ffe95505847da5a6e4c6fc065e41d9d1))
* preserve JSON Schema 2020-12 keyword siblings on $ref schemas for OAS 3.1+ ([#​2896](https://github.com/microsoft/OpenAPI.NET/issues/2896)) ([c79a83e](https://github.com/microsoft/OpenAPI.NET/commit/c79a83e74a0a41367c37f050d78d3e0ace838bc0))
* use async method for crypto flush ([677b519](https://github.com/microsoft/OpenAPI.NET/commit/677b5197d9c4f7de2122852ad49d5012f7082e71))

## 2.9.0

## [2.9.0](https://github.com/microsoft/OpenAPI.NET/compare/v2.8.0...v2.9.0) (2026-06-10)


### Features

* add contains/minContains/maxContains members ([fadb422](https://github.com/microsoft/OpenAPI.NET/commit/fadb42225561e150aa99459c0c359c00cf52fb1a))
* **library:** add missing json schema properties ([db41a3c](https://github.com/microsoft/OpenAPI.NET/commit/db41a3c952e651f80a6bbdb7d8aac001031e6dd3))


### Bug Fixes

* **library:** always copy unevaluated properties ([3951a31](https://github.com/microsoft/OpenAPI.NET/commit/3951a310da6056fd7a6852fda129a8ad8583639a))
* **library:** avoid false circular refs for external schema re-exports ([a058913](https://github.com/microsoft/OpenAPI.NET/commit/a058913943d4c197ccf03742f1c67ecc50e11a03))
* **library:** avoid false circular refs for external schema re-exports ([1bace68](https://github.com/microsoft/OpenAPI.NET/commit/1bace6804bc15c22b7665df7c66bed2a4a27bad0))
* **library:** merge contains compat members into missing properties ([7dc45e1](https://github.com/microsoft/OpenAPI.NET/commit/7dc45e14160825f79d5e64e6c9c8ba2a02900bcf))
* **library:** remove unshipped schema extension fallback ([b301827](https://github.com/microsoft/OpenAPI.NET/commit/b30182773fd875fb0a55c1a2bf48018910922ead))
* **library:** use version-specific schema keyword callbacks ([f93d76a](https://github.com/microsoft/OpenAPI.NET/commit/f93d76a4643022fc5d35b3d8ca8078276bbcce4f))
* **library:** use x-jsonschema schema extensions ([ec04a7f](https://github.com/microsoft/OpenAPI.NET/commit/ec04a7fcd43c296602edc15c197dc49cee112472))

## 2.8.0

## [2.8.0](https://github.com/microsoft/OpenAPI.NET/compare/v2.7.6...v2.8.0) (2026-06-01)


### Features

* **reader:** remove ParseNode infrastructure ([d7c6a9d](https://github.com/microsoft/OpenAPI.NET/commit/d7c6a9dbe2da8cccac2a3dcbc5277bf0f20b0aa9))
* Significant performance improvements resulting ~40% reduced allocations when parsing JSON descriptions, ~25% for YAML.

## 2.7.6

## [2.7.6](https://github.com/microsoft/OpenAPI.NET/compare/v2.7.5...v2.7.6) (2026-05-28)


### Bug Fixes

* **reader:** preserve nullable Null flag when type appears after nullable in V3.1/V3.2 deserializers ([288e95a](https://github.com/microsoft/OpenAPI.NET/commit/288e95aa743cb98dc69b44577ae78956f3f1c7c4))

Commits viewable in [compare view](https://github.com/Microsoft/OpenAPI.NET/compare/v2.7.5...v2.10.0).
</details>

Updated [NodaTime](https://github.com/nodatime/nodatime) from 3.3.0 to 3.3.3.

<details>
<summary>Release notes</summary>

_Sourced from [NodaTime's releases](https://github.com/nodatime/nodatime/releases)._

No release notes found for this version range.

Commits viewable in [compare view](https://github.com/nodatime/nodatime/commits).
</details>

Updated [NodaTime.Serialization.JsonNet](https://github.com/nodatime/nodatime.serialization) from 3.2.0 to 3.3.0.

<details>
<summary>Release notes</summary>

_Sourced from [NodaTime.Serialization.JsonNet's releases](https://github.com/nodatime/nodatime.serialization/releases)._

## 3.3.0

Changes since 3.2.1:

- Support for YearMonth conversion
- Dependency updates

## 3.2.1

Changes since 3.2.0:

- Fixed the InvalidNodaDataException message when parsing a JSON time zone

Commits viewable in [compare view](https://github.com/nodatime/nodatime.serialization/compare/NodaTime.Serialization.JsonNet-3.2.0...NodaTime.Serialization.JsonNet-3.3.0).
</details>

Updated [NodaTime.Serialization.SystemTextJson](https://github.com/nodatime/nodatime.serialization) from 1.3.0 to 1.4.0.

<details>
<summary>Release notes</summary>

_Sourced from [NodaTime.Serialization.SystemTextJson's releases](https://github.com/nodatime/nodatime.serialization/releases)._

## 1.4.0

Changes since 1.3.1:

- Support for YearMonth conversion
- Include the JSON path where the invalid data is in the JsonException
- Dependency updates

## 1.3.1

Changes since 1.3.0:

- Fixed the InvalidNodaDataException message when parsing a JSON time zone
- Fixed https://github.com/nodatime/nodatime.serialization/issues/135 where NodaTime.Serialization.SystemTextJson failed to serialize intervals when using NodaTimeDefaultJsonConverterAttribute

Commits viewable in [compare view](https://github.com/nodatime/nodatime.serialization/compare/NodaTime.Serialization.SystemTextJson-1.3.0...NodaTime.Serialization.SystemTextJson-1.4.0).
</details>

Updated [Npgsql.EntityFrameworkCore.PostgreSQL](https://github.com/npgsql/efcore.pg) from 10.0.0 to 10.0.3.

<details>
<summary>Release notes</summary>

_Sourced from [Npgsql.EntityFrameworkCore.PostgreSQL's releases](https://github.com/npgsql/efcore.pg/releases)._

## 10.0.2

[Milestone issue](https://github.com/npgsql/efcore.pg/milestone/77)

## What's Changed
* Translate `bytea.Any()` as `length > 0` by @​georg-jung in https://github.com/npgsql/efcore.pg/pull/3817

**Full Changelog**: https://github.com/npgsql/efcore.pg/compare/v10.0.1...v10.0.2

Commits viewable in [compare view](https://github.com/npgsql/efcore.pg/commits).
</details>

Updated [Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime](https://github.com/npgsql/efcore.pg) from 10.0.0 to 10.0.3.

<details>
<summary>Release notes</summary>

_Sourced from [Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime's releases](https://github.com/npgsql/efcore.pg/releases)._

## 10.0.2

[Milestone issue](https://github.com/npgsql/efcore.pg/milestone/77)

## What's Changed
* Translate `bytea.Any()` as `length > 0` by @​georg-jung in https://github.com/npgsql/efcore.pg/pull/3817

**Full Changelog**: https://github.com/npgsql/efcore.pg/compare/v10.0.1...v10.0.2

Commits viewable in [compare view](https://github.com/npgsql/efcore.pg/commits).
</details>

Updated [NuGet.Packaging](https://github.com/NuGet/NuGet.Client) from 6.12.5 to 6.14.3.

<details>
<summary>Release notes</summary>

_Sourced from [NuGet.Packaging's releases](https://github.com/NuGet/NuGet.Client/releases)._

No release notes found for this version range.

Commits viewable in [compare view](https://github.com/NuGet/NuGet.Client/commits).
</details>

Updated [NuGet.Protocol](https://github.com/NuGet/NuGet.Client) from 6.12.5 to 6.14.3.

<details>
<summary>Release notes</summary>

_Sourced from [NuGet.Protocol's releases](https://github.com/NuGet/NuGet.Client/releases)._

No release notes found for this version range.

Commits viewable in [compare view](https://github.com/NuGet/NuGet.Client/commits).
</details>

Updated [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis/) from 2.10.1 to 2.13.17.

<details>
<summary>Release notes</summary>

_Sourced from [StackExchange.Redis's releases](https://github.com/StackExchange/StackExchange.Redis//releases)._

No release notes found for this version range.

Commits viewable in [compare view](https://github.com/StackExchange/StackExchange.Redis//commits).
</details>

Updated [Swashbuckle.AspNetCore.Swagger](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) from 10.1.0 to 10.2.3.

<details>
<summary>Release notes</summary>

_Sourced from [Swashbuckle.AspNetCore.Swagger's releases](https://github.com/domaindrivendev/Swashbuckle.AspNetCore/releases)._

## 10.2.3

## What's Changed

* Bump swagger-ui-dist to 5.32.7 by @​dependabot in https://github.com/domaindrivendev/Swashbuckle.AspNetCore/pull/4015

**Full Changelog**: https://github.com/domaindrivendev/Swashbuckle.AspNetCore/compare/v10.2.2...v10.2.3

## 10.2.2

## What's Changed

* Update NuGet packages by @​martincostello in https://github.com/domaindrivendev/Swashbuckle.AspNetCore/pull/3990
* Set `SOURCE_DATE_EPOCH` by @​martincostello in https://github.com/domaindrivendev/Swashbuckle.AspNetCore/pull/3997
* Fix `InvalidOperationException` if no route matches by @​martincostello in https://github.com/domaindrivendev/Swashbuckle.AspNetCore/pull/3999
* Fix empty parameter example not generated by @​dldl-cmd in https://github.com/domaindrivendev/Swashbuckle.AspNetCore/pull/3932
* Map `[MinLength]`/`[MaxLength]` on dictionary properties to `minProperties`/`maxProperties` by @​KitKeen in https://github.com/domaindrivendev/Swashbuckle.AspNetCore/pull/3922
* Fix conflicting required+nullable schema when only NonNullableReferen… by @​KitKeen in https://github.com/domaindrivendev/Swashbuckle.AspNetCore/pull/3912
* Fix `ExposeSwaggerDocumentUrlsRoute` behaviour by @​martincostello in https://github.com/domaindrivendev/Swashbuckle.AspNetCore/pull/4000
* Use `NUGET_API_KEY` by @​martincostello in https://github.com/domaindrivendev/Swashbuckle.AspNetCore/pull/4006

## New Contributors

* @​KitKeen made their first contribution in https://github.com/domaindrivendev/Swashbuckle.AspNetCore/pull/3922

**Full Changelog**: https://github.com/domaindrivendev/Swashbuckle.AspNetCore/compare/v10.2.1...v10.2.2


## 10.2.1

## What's Changed

* Update Microsoft.OpenApi to 2.7.5 to pick up fix for GHSA-v5pm-xwqc-g5wc by @​martincostello in https://github.com/domaindrivendev/Swashbuckle.AspNetCore/p...

_Description has been truncated_

Bumps csharpier from 0.17.0 to 0.30.6
Bumps EFCore.NamingConventions from 10.0.0 to 10.0.1
Bumps FluentAssertions from 8.8.0 to 8.10.0
Bumps Microsoft.AspNetCore.Authentication.JwtBearer from 10.0.2 to 10.0.9
Bumps Microsoft.EntityFrameworkCore from 10.0.2 to 10.0.9
Bumps Microsoft.EntityFrameworkCore.Design from 10.0.2 to 10.0.9
Bumps Microsoft.EntityFrameworkCore.Relational from 10.0.2 to 10.0.9
Bumps Microsoft.EntityFrameworkCore.Tools from 10.0.2 to 10.0.9
Bumps Microsoft.OpenApi from 2.7.5 to 2.10.0
Bumps NodaTime from 3.3.0 to 3.3.3
Bumps NodaTime.Serialization.JsonNet from 3.2.0 to 3.3.0
Bumps NodaTime.Serialization.SystemTextJson from 1.3.0 to 1.4.0
Bumps Npgsql.EntityFrameworkCore.PostgreSQL from 10.0.0 to 10.0.3
Bumps Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime from 10.0.0 to 10.0.3
Bumps NuGet.Packaging from 6.12.5 to 6.14.3
Bumps NuGet.Protocol from 6.12.5 to 6.14.3
Bumps StackExchange.Redis from 2.10.1 to 2.13.17
Bumps Swashbuckle.AspNetCore.Swagger from 10.1.0 to 10.2.3
Bumps Swashbuckle.AspNetCore.SwaggerGen from 10.1.0 to 10.2.3

---
updated-dependencies:
- dependency-name: csharpier
  dependency-version: 0.30.6
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-minor-and-patch
- dependency-name: EFCore.NamingConventions
  dependency-version: 10.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor-and-patch
- dependency-name: Microsoft.AspNetCore.Authentication.JwtBearer
  dependency-version: 10.0.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor-and-patch
- dependency-name: Microsoft.EntityFrameworkCore
  dependency-version: 10.0.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor-and-patch
- dependency-name: Microsoft.EntityFrameworkCore.Design
  dependency-version: 10.0.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor-and-patch
- dependency-name: Microsoft.EntityFrameworkCore.Tools
  dependency-version: 10.0.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor-and-patch
- dependency-name: Microsoft.OpenApi
  dependency-version: 2.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-minor-and-patch
- dependency-name: NodaTime
  dependency-version: 3.3.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor-and-patch
- dependency-name: NodaTime.Serialization.JsonNet
  dependency-version: 3.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-minor-and-patch
- dependency-name: NodaTime.Serialization.SystemTextJson
  dependency-version: 1.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-minor-and-patch
- dependency-name: Npgsql.EntityFrameworkCore.PostgreSQL
  dependency-version: 10.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor-and-patch
- dependency-name: Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime
  dependency-version: 10.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor-and-patch
- dependency-name: NuGet.Packaging
  dependency-version: 6.14.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-minor-and-patch
- dependency-name: NuGet.Protocol
  dependency-version: 6.14.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-minor-and-patch
- dependency-name: StackExchange.Redis
  dependency-version: 2.13.17
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-minor-and-patch
- dependency-name: Swashbuckle.AspNetCore.Swagger
  dependency-version: 10.2.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-minor-and-patch
- dependency-name: Swashbuckle.AspNetCore.SwaggerGen
  dependency-version: 10.2.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-minor-and-patch
- dependency-name: FluentAssertions
  dependency-version: 8.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-minor-and-patch
- dependency-name: Microsoft.EntityFrameworkCore.Relational
  dependency-version: 10.0.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added .NET Pull requests that update .NET code dependencies Pull requests that update a dependency file labels Jul 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants